package CamposDePotencial;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.vecmath.Point3d;

import estrategia.Utiles;
import estrategia.Vector;

public class CampoCircularAtractor extends CampoPotencial{

	private double Katraccion;
	
	private final String pathConfig = "src/CamposDePotencial/Configuracion/CampoCircularAtractor.properties";
	Properties prop;	
	
	
	public CampoCircularAtractor(Objeto o, Utiles u) {
		// TODO Auto-generated constructor stub
		super(o, u);
	}
	
	
	public void  cargarConstantes() {
		prop = new Properties();
		try {
			InputStream istream = new FileInputStream(pathConfig);
			prop.load(istream);
		} catch (FileNotFoundException e) {
			System.out.println("No se encontro el archivo de configuracion");
		} catch (IOException e) {
			System.out.println("Se produjo un error al levantar el archivo de configuracion");
		}
		
		Katraccion = Double.parseDouble(prop.getProperty("K_ATRACCION"));
	}
	
	
	public double getMagnitudFuerza(Point3d mipos, Point3d posObj) {
		double distancia = utiles.distanciaEuclidea(mipos, posObj);
		return Katraccion*(Math.pow(distancia, 2));
	}
	
	
	public Vector obtenerFuerza(Point3d mipos) throws IOException{
		cargarConstantes();
		
		double direccion = utiles.getAnguloTheta(mipos, objeto.getPosicion());
		System.out.println("La direccion del atractor es = " + direccion);
		
		double magnitud = getMagnitudFuerza(mipos, objeto.getPosicion());
		 
		Vector resultante = new Vector(magnitud, direccion);
		
		return resultante;
	}
}

